package IO.操作文件;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;


//递归打印所有文件和子文件夹的内容
public class File对象 {
	public static void main(String[] args) throws IOException {
		File currentDir = new File(".");
		
		System.out.println(currentDir.getCanonicalPath() + File.separator);
		return;
		//listDir(currentDir.getCanonicalFile());
	}

	// 如果不指定参数，则使用当前目录，如果指定参数，则使用指定目录。
	static void listDir(File dir) {
		// TODO: 递归打印所有文件和子文件夹的内容
		File[] files = dir.listFiles();
		System.out.println(dir.getName() + File.separator);
		for (File file : files) {
			StringBuilder space = new StringBuilder(1024);
			space.append("  ");
			dirTools(file, space);
		}
	}

	public static void dirTools(File file, StringBuilder space) {
		if (file.isDirectory()) {// 目录
			System.out.println(space + file.getName() + File.separator);
			for (File subFile : file.listFiles()) {
				space.append("  ");
				dirTools(subFile, space);
				space.delete(space.length() - 2, space.length());
			}
		} else {// 文件
			System.out.println(space + file.getName());
		}
	}
}

/*
public class File对象 {

	public static void main(String[] args) throws IOException {
		File currentDir = new File("."); // 所需文件已手动创建在本地目录
		System.out.println(currentDir.getCanonicalFile()+File.separator);
		listDir(currentDir.getCanonicalFile());
	}

	static int depth = 1;
	static void listDir(File dir) {
		// TODO: 递归打印所有文件和子文件夹的内容
		File[] fs = dir.listFiles();
		String blank = "  ";
		blank = blank.repeat(depth);
		if (fs != null) {
			for (File f : fs) {
				if (f.isDirectory()) {
					System.out.println(blank + +depth+":"+f.getName() + File.separator);
					depth ++;
					listDir(f);
					depth --;
				}
				if (f.isFile()) {
					System.out.println(blank + f.getName());
				}
			}
		}
	}
}
*/
/*
public class File对象 {
	public static void main(String[] args) throws IOException {
		Path p1 = Paths.get(".", "project", "study0", "study1"); // 构造一个Path对象
		System.out.println(p1);
		Path p2 = p1.toAbsolutePath(); // 转换为绝对路径
		System.out.println("绝对路径: " + p2);
		Path p3 = p2.normalize(); // 转换为规范路径
		System.out.println("规范路径: " + p3);
		File f = p3.toFile(); // 转换为File对象
		System.out.println("File对象: " + f + " " + f.isFile());
		Path p4 = f.toPath();
		System.out.println("path对象: " + p4 + " " + p4.isAbsolute());
		for (Path p : Paths.get("..").toAbsolutePath()) { // 可以直接遍历Path
			System.out.println("  " + p);
			System.out.println(" 反反复复烦烦烦烦烦烦烦烦烦烦烦烦 ");
		}
		System.out.println("eclipse修改");
	}
}*/